Конфигурация¶
Конфигурация TCS¶
Конфигурация TCS задается в файле формата YAML и описывает конфигурацию
всего кластера. Конфигурация хранится локально, либо обновляется посредством etcd
(см. Первичная установка системы.
Далее описаны возможности конфигурирования типовых сценариев.
Настройка частоты обновлений представления для чтения¶
Представление для чтения обновляется раз в столько миллисекунд,
сколько указано в параметре rv_update_ms. По умолчанию, 100.
При необходимости можно задать другое значение. Пример:
groups:
storages:
replicasets:
replicaset1:
instances:
instance1:
roles_cfg:
tcs_roles/storage:
rv_update_ms: 100000
Настройка максимального времени выполнения запросов¶
В TCS заданы ограничения по умолчанию на максимальное время выполнения запросов:
для всех типов запросов, кроме аналитических расчетов: 5 мс
для каждого счетчика в аналитических расчетах: 4,5 мс
По истечении этого времени TCS прерывает обработку запроса и присылает ответ
HTTP 408 Request timeout.
При необходимости эти значения можно изменить в консоли с помощью Lua-инструкций на всех серверах с Tarantool:
require('app.roles.tcs.storage.api').configure_http_timeout_ms({timeout_ms})
require('app.roles.tcs.storage.api').configure_computation_max_duration_ms({duration_ms})
Перезагрузка при этом не требуется.
Настройка параллельного чтения колонок¶
Для параллельного чтения колонок можно задать количество потоков обработки запроса
(партиций) в параметре partition_count. По умолчанию, 1.
При необходимости можно увеличить это значение, чтобы ускорить обработку запросов.
Пример:
roles_cfg:
tcs_roles/storage:
partition_count: 10
Рекомендуется оставлять значение по умолчанию, либо задавать значение в два раза меньше количества ядер CPU.
Настройка аварийного переключения¶
В конфигурации можно задать вид аварийного переключения в случае сбоя экземпляра в наборе реплик:
manual– ручной режимsupervised– автоматический режим (требует запуска отдельного экземпляра Tarantool, который выступает в качестве координатора отказоустойчивого кластера)
Для автоматического режима также можно указать дополнительные параметры:
failover:
call_timeout: 1
connect_timeout: 1
lease_interval: 10
probe_interval: 1
renew_interval: 10
stateboard:
keepalive_interval: 15
renew_interval: 3
Для значений параметров должна соблюдаться следующая формула:
lease_interval > probe_interval + renew_interval
Описания параметров см. в документации Tarantool.
Настройка портов для мониторинга¶
В конфигурации TCS можно указать номер порта для передачи метрик мониторинга
на HTTP-адресе /metrics с экземпляров Storage.
Можно указать следующие номера портов:
для метрик TCS (по умолчанию
7777):http: enabled: true listen: 0.0.0.0:7777
для метрик Tarantool (по умолчанию
8081):roles.metrics-export: http: - listen: 0.0.0.0:8081
Конфигурация данных¶
Модель данных в TCS задается с помощью инструкций SQL DDL и не является частью конфигурации. См. подробнее в разделе Модель данных.
Конфигурация переменных¶
При необходимости с помощью инструкций SET и SHOW можно установить и проверить значения переменных, которые задают правила выполнения запросов в рамках текущей сессии.
Например:
SET datafusion.execution.batch_size to 10000
SHOW datafusion.execution.batch_size
name value
0 datafusion.execution.batch_size 10000
Поддерживаются следующие переменные.
datafusion.execution.batch_size¶
Размер пакета (batch) по умолчанию при создании новых пакетов. Это особенно полезно для пакетов с буферизацией в памяти, поскольку создание небольших пакетов приведет к слишком большому потреблению памяти для метаданных.
Значение по умолчанию: 8192
datafusion.execution.coalesce_batches¶
Если значение равно true, пакеты записей (record batches) будут проверяться каждым оператором, и небольшие пакеты будут объединяться в более крупные. Это полезно при использовании высокоизбирательных фильтров или объединений, которые могут создавать небольшие пакеты на выходе. Целевой размер пакета определяется параметром конфигурации.
Значение по умолчанию: TRUE
datafusion.execution.collect_statistics¶
Нужно ли собирать статистику при первом создании таблицы. Не влияет ни на что после создания таблицы. Применяется к ListingTableProvider по умолчанию.
Значение по умолчанию: FALSE
datafusion.execution.target_partitions¶
Количество партиций для выполнения запроса. Увеличение количества партиций может увеличить параллелизм. По умолчанию используется количество ядер процессора в системе.
Значение по умолчанию: 0
datafusion.execution.time_zone¶
Часовой пояс по умолчанию. Некоторые функции, например, EXTRACT(HOUR from SOME_TIME), сдвигают базовую дату-время в соответствии с этим часовым поясом, а затем извлекают час.
Значение по умолчанию: +00:00
datafusion.execution.parquet.enable_page_index¶
(чтение) Если значение равно true, считывать метаданные на уровне страницы Parquet data (Page Index), если они присутствуют, для уменьшения ввода-вывода и количества из расшифрованных строк.
Значение по умолчанию: TRUE
datafusion.execution.parquet.pruning¶
(чтение) Если значение равно true, программа чтения parquet пытается пропустить целые группы строк на основе предиката в запросе и метаданных (минимальных/максимальных значений), хранящихся в файле parquet.
Значение по умолчанию: TRUE
datafusion.execution.parquet.skip_metadata¶
(чтение) Если значение равно true, программа чтения parquet пропускает необязательные встроенные метаданные, которые могут быть в схеме файла. Этот параметр может помочь избежать конфликтов схем при запросе нескольких файлов parquet со схемами, содержащими совместимые типы, но разные метаданные.
Значение по умолчанию: TRUE
datafusion.execution.parquet.metadata_size_hint¶
(чтение) Если значение указано, программа чтения parquet попытается извлечь последние байты size_hint файла parquet оптимистично. Если не указано, требуется выполнить два чтения: одно чтение для извлечения 8-байтового нижнего колонтитула parquet, а другое - для извлечения длины метаданных, закодированных в нижнем колонтитуле.
Значение по умолчанию: NULL
datafusion.execution.parquet.pushdown_filters¶
(чтение) Если значение равно true, во время операции декодирования parquet применяются выражения фильтра, чтобы уменьшить количество декодируемых строк. Такую оптимизацию иногда называют «поздней материализацией».
Значение по умолчанию: FALSE
datafusion.execution.parquet.reorder_filters¶
(чтение) Если значение равно true, выражения фильтра, вычисленные во время операции последовательного декодирования, будут эвристически переупорядочены, чтобы минимизировать затраты на вычисление. Если false, фильтры применяются в том же порядке, что и в запросе
Значение по умолчанию: FALSE
datafusion.execution.parquet.schema_force_view_types¶
(чтение) Если значение равно true, parquet reader будет считывать столбцы Utf8/Utf8Large с помощью Utf8View и Binary/BinaryLarge с помощью BinaryView.
Значение по умолчанию: TRUE
datafusion.execution.parquet.binary_as_string¶
(чтение) Если значение равно true, parquet reader будет считывать столбцы Binary/LargeBinary с Utf8, а BinaryView - с помощью Utf8View. В файлах Parquet, созданных некоторыми устаревшими редакторами, неправильно установлен флаг UTF8 для строк, в результате чего столбцы string загружаются как большие двоичные объекты.
Значение по умолчанию: FALSE
datafusion.execution.parquet.coerce_int96¶
(чтение) Если значение равно true, parquet reader будет считывать столбцы физического типа int96 как исходящие из другого разрешения, отличного от наносекундного. Это полезно для чтения данных из таких систем, как Spark, которые хранят временные метки с разрешением в микросекунды в int96, что позволяет записывать значения с бОльшим диапазоном дат, чем 64-разрядные временные метки с наносекундным разрешением.
Значение по умолчанию: NULL
datafusion.execution.parquet.bloom_filter_on_read¶
(чтение) При чтении файлов parquet использовать любые доступные bloom-фильтры.
Значение по умолчанию: TRUE
datafusion.execution.parquet.data_pagesize_limit¶
(запись) Максимальный размер страницы данных в байтах.
Значение по умолчанию: 1048576
datafusion.execution.parquet.write_batch_size¶
(запись) write_batch_size в байтах.
Значение по умолчанию: 1024
datafusion.execution.parquet.writer_version¶
(запись) Версия parquet writer, допустимыми значениями являются 1.0 и 2.0.
Значение по умолчанию: 1.0
datafusion.execution.parquet.skip_arrow_metadata¶
(запись) Пропустить кодирование встроенных метаданных arrow в KV_meta. Это аналогично ArrowWriterOptions::with_skip_arrow_metadata. См. https://docs.rs/parquet/53.3.0/parquet/arrow/arrow_writer/struct.ArrowWriterOptions.html#method.with_skip_arrow_metadata
Значение по умолчанию: FALSE
datafusion.execution.parquet.compression¶
(запись) Устанавливает кодек сжатия parquet по умолчанию. Допустимыми значениями являются: uncompressed, snappy, gzip(уровень), lzo, brotli(уровень), lz4, zstd(уровень) и lz4_raw. Регистр в этих значениях не учитывается. Если значение равно NULL, используется настройка записи parquet по умолчанию. Обратите внимание, что эта настройка по умолчанию отличается от настройки записи parquet по умолчанию.
Значение по умолчанию: zstd(3)
datafusion.execution.parquet.dictionary_enabled¶
(запись) Включена ли словарная кодировка. Если значение равно NULL, используется параметр записи в parquet по умолчанию
Значение по умолчанию: TRUE
datafusion.execution.parquet.dictionary_page_size_limit¶
(запись) Максимальный размер страницы словаря в байтах.
Значение по умолчанию: 1048576
datafusion.execution.parquet.statistics_enabled¶
(запись) Включена ли статистика для любого столбца, допустимыми значениями являются: none, chunk и page. Эти значения не чувствительны к регистру. Если NULL, используется параметр записи в parquet по умолчанию
Значение по умолчанию: page
datafusion.execution.parquet.max_statistics_size¶
(запись), который устанавливает максимальный размер статистики для любого столбца.
Значение по умолчанию: 4096
datafusion.execution.parquet.max_row_group_size¶
(запись) Укажите максимальное количество строк в каждой группе строк (по умолчанию - 1 млн строк). Запись больших групп строк требует больше памяти для записи, но позволяет добиться лучшего сжатия и ускорения чтения.
Значение по умолчанию: 1048576
datafusion.execution.parquet.created_by¶
(запись) Значение для created by (создано с помощью).
Значение по умолчанию: datafusion version 48.0.0
datafusion.execution.parquet.column_index_truncate_length¶
(запись) Длина усечения индекса столбца.
Значение по умолчанию: 64
datafusion.execution.parquet.statistics_truncate_length¶
(запись) Длина статического усечения. Если значение равно NULL, используется параметр записи parquet по умолчанию.
Значение по умолчанию: NULL
datafusion.execution.parquet.data_page_row_count_limit¶
(запись) Максимальное количество строк на странице данных.
Значение по умолчанию: 20000
datafusion.execution.parquet.encoding¶
(запись) Кодировка по умолчанию для любого столбца. Допустимыми значениями являются: plain, plain_dictionary, rle, bit_packed, delta_binary_packed, delta_length_byte_array, delta_byte_array, rle_dictionary и byte_stream_split. Эти значения не чувствительны к регистру. Если значение равно NULL, используется настройка записи в parquet по умолчанию.
Значение по умолчанию: NULL
datafusion.execution.parquet.bloom_filter_on_write¶
(запись) Записывать ли bloom-фильтры для всех столбцов при создании файлов parquet
Значение по умолчанию: FALSE
datafusion.execution.parquet.bloom_filter_fpp¶
(запись) Вероятность ложного срабатывания bloom-фильтра. Если значение равно NULL, используется настройка записи в parquet по умолчанию.
Значение по умолчанию: NULL
datafusion.execution.parquet.bloom_filter_ndv¶
(запись) Количество различных значений bloom-фильтра. Если значение равно NULL, используется настройка записи parquet по умолчанию.
Значение по умолчанию: NULL
datafusion.execution.parquet.allow_single_file_parallelism¶
(запись) Пытаться ли ускорить запись файлов parquet путем их параллельной сериализации. Каждый столбец в каждой группе строк в каждом выходном файле сериализуется параллельно, используя максимально возможное количество базовых значений n_filesn_row_groupsn_columns.
Значение по умолчанию: TRUE
datafusion.execution.parquet.maximum_parallel_row_group_writers¶
(запись) По умолчанию parallel parquet writer настроен на минимальное использование памяти в плане потокового выполнения. Вы можете увидеть увеличение производительности при записи больших файлов parquet за счет увеличения maximum_parallel_row_group_writers и maximum_buffered_record_batches_per_stream, если в вашей системе есть незанятые ядра и она может выдержать дополнительное использование памяти. Увеличение этих значений, вероятно, имеет смысл при записи уже имеющихся в памяти данных, например, из кэшированного фрейма данных.
Значение по умолчанию: 1
datafusion.execution.parquet.maximum_buffered_record_batches_per_stream¶
(запись) По умолчанию parallel parquet writer настроен на минимальное использование памяти в плане потокового выполнения. Вы можете увидеть увеличение производительности при записи больших файлов parquet за счет увеличения maximum_parallel_row_group_writers и maximum_buffered_record_batches_per_stream, если в вашей системе есть незанятые ядра и она может выдержать дополнительное использование памяти. Увеличение этих значений, вероятно, имеет смысл при записи уже имеющихся в памяти данных, например, из кэшированного фрейма данных.
Значение по умолчанию: 2
datafusion.execution.planning_concurrency¶
Разветвление при первоначальном физическом планировании. В основном используется для параллельного планирования дочерних элементов UNION. По умолчанию используется количество процессорных ядер в системе.
Значение по умолчанию: 0
datafusion.execution.skip_physical_aggregate_schema_check¶
Если значение равно true, не выполняется проверка того, что схема, созданная при планировании входных данных LogicalPlan::Aggregate, точно соответствует схеме входного плана. Если установлено значение false, если схема не соответствует в точности (включая возможность обнуления и метаданные), будет выдана ошибка планирования. Это используется для устранения ошибок в планировщике, которые теперь обнаруживаются на этапе проверки новой схемы.
Значение по умолчанию: FALSE
datafusion.execution.sort_spill_reservation_bytes¶
Объем памяти, зарезервированный для каждой операции сортировки с возможностью переноса, чтобы упростить объединение данных в памяти. Когда операция сортировки переносится на диск, данные в памяти должны быть отсортированы и объединены перед записью в файл. Этот параметр резервирует определенный объем памяти для процесса сортировки/слияния в оперативной памяти. Примечание: Этот параметр не имеет значения, если операция сортировки не может быть выполнена (т.е. если DiskManager не настроен).
Значение по умолчанию: 10485760
datafusion.execution.sort_in_place_threshold_bytes¶
Порог размера при сортировке, ниже которого данные следует объединять и сортировать в одном наборе записей, а не сортировать пакетами и объединять.
Значение по умолчанию: 1048576
datafusion.execution.meta_fetch_concurrency¶
Количество файлов для параллельного чтения при выводе схемы и статистики.
Значение по умолчанию: 32
datafusion.execution.minimum_parallel_output_files¶
Гарантирует минимальное количество выходных файлов, выполняемых параллельно. Пакеты записей будут распределяться циклически по каждому параллельному записывающему устройству. Каждый файл записи закрывается и открывается новый, как только достигается значение soft_max_rows_per_output_file.
Значение по умолчанию: 4
datafusion.execution.soft_max_rows_per_output_file¶
Заданное количество строк в выходных файлах при записи нескольких строк. Это допустимое максимальное значение, поэтому его можно немного превысить. Кроме того, размер файла будет на одну строку меньше установленного предела, если общее количество записанных строк не делится грубым образом на максимальное значение.
Значение по умолчанию: 50000000
datafusion.execution.max_buffered_batches_per_output_file¶
Это максимальное количество пакетов записей, буферизуемых для каждого обрабатываемого выходного файла. Более высокие значения потенциально могут повысить производительность записи за счет более высокого пикового потребления памяти.
Значение по умолчанию: 2
datafusion.execution.listing_table_ignore_subdirectory¶
Игнорировать ли вложенные каталоги при сканировании каталогов на наличие файлов данных. По умолчанию установлено значение true (игнорируются подкаталоги), соответствующее Hive. Обратите внимание, что этот параметр не влияет на чтение секционированных таблиц (например, /table/year=2021/month=01/data.parquet).
Значение по умолчанию: TRUE
datafusion.execution.enable_recursive_ctes¶
Поддерживать ли рекурсивные CTE.
Значение по умолчанию: TRUE
datafusion.execution.split_file_groups_by_statistics¶
Пытаться ли устранить сортировку, упаковав и отсортировав файлы с непересекающейся статистикой в одни и те же группы файлов. Экспериментальный параметр.
Значение по умолчанию: FALSE
datafusion.execution.keep_partition_by_columns¶
Сохранять ли столбцы, используемые для partition_by, в выходных пакетах записей.
Значение по умолчанию: FALSE
datafusion.execution.skip_partial_aggregation_probe_ratio_threshold¶
Коэффициент агрегации (количество отдельных групп / количество входных строк) – пороговое значение для пропуска частичной агрегации. Если значение больше, то при частичной агрегации будет пропущена агрегация для дальнейшего ввода.
Значение по умолчанию: 0.8